package cn.baker.delayqueue.config;

import lombok.*;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.concurrent.TimeUnit;

/**
 * @author yuanyu
 */
@Getter
@Setter
@ToString
@ConfigurationProperties(prefix = "delay.queue")
public class DelayQueueProperties {

    /**
     * 延迟时间多少ms后的消息才放入redis
     *
     * 30分钟内到期的消息，直接加入队列
     */
    private Long addQueueMaxTime = TimeUnit.MINUTES.toMillis(30);

    /**
     * 到期时间 < 当前时间+scanMaxTime 数据都需要放入redis队列
     *
     * 10分钟后到期的，全部扫到队列里面去
     */
    private Long scanMaxTime = TimeUnit.MINUTES.toMillis(10);

    /**
     * 定时任务频率
     *
     * 多少ms扫描一次数据
     */
    private Long taskScanFreq = 1000L;

    /**
     * 队列元素大小
     */
    private Long maxQueueSize = 1000L;


    /**
     * 客户端监听延迟队列扫描频率
     *
     * 多少ms扫描一次阻塞队列
     */
    private Long queueScanFreq = 500L;

    /**
     * 过期时间设置 ms
     *
     * 默认7天，避免队列成为永久key
     */
    private Long millis = TimeUnit.DAYS.toMillis(7);

}
